Собираем свой OpenWRT на роутер Tp 您所在的位置:网站首页 openwrt ppp Собираем свой OpenWRT на роутер Tp

Собираем свой OpenWRT на роутер Tp

2023-04-07 18:47| 来源: 网络整理| 查看: 265

В данной статье я хотел бы поделиться опытом сборки собственной прошивки openwrt, с выбором нужных пакетов, а также настройкой отказоустойчивого доступа в интернет с мгновенной ротацией каналов и одновременной их работой, складыванием скорости провайдеров и как следствием, настройкой всем любимых vlan-ов.

Выбор пал на роутер Tp-Link TL-WR741ND v.4.25 (цена 1150 рублей), который я выбрал по следующим характеристикам:

1) Низкая цена 2) Достаточное количество памяти для заявленных требований 3) Возможность запиливания USB (для истинных ценителей поковырять железку) 4) Поддержка OpenWrt Barrier breaker 5) Поддержка vlan-ов 6) Поразительная живучесть (роутер невозможно убить неверной прошивкой, функция восстановления прошивки по tftpd работает как часы, и не раз выручала во время неудачных экспериментов). О методах восстановления напишу в конце статьи.

Стандартная прошивка для данного роутера от OpenWrt не устраивала. Причиной тому были лишние пакеты, которые занимали место в драгоценной памяти данного малыша.

Было решено выпилить: ppp, поддержку ipv6, opkg (ставить же не будем больше ничего). Добавить: openvpn-polarssl (меньше занимает места), luci-mwan3 (очень понравилась визуальная настройки и индикация работы каналов) Итак, начнем:

1) Подготовка устройства Для начала, обновим наше устройство до последней версии стандартной прошивки tp-link. Смысла описывать подробно данное действо я не вижу, все достаточно понятно и просто.

2) Сбор прошивки Нам понадобится многоядерный процессор для комфортного создания своей прошивки (я собирал на i7). Но и Core2Duo сойдет, разве что подольше собираться будет. OS подойдет Ubuntu 15 x86_64.

Установка необходимых пакетов:

sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install subversion git g++ libncurses5-dev zlib1g-dev gawk -y

Все дальнейшие команды сборки делаются от обычного пользователя, не от рута!

Идем в «магазин» за исходниками. Я выбрал OpenWrt Bariier Breaker за удобство в настройке и отличную стабильность на предыдущем роутере (TP-LINK Archer C7).

svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker wrt cd ~/wrt svn update В домашней папке у нас появится папка wrt, где мы и будем производить сборку.

Скачаем исходники дополнительных пакетов (типа Luci):

./scripts/feeds update -a ./scripts/feeds install -a Выполним настройку платформы

make menuconfig Появится псевдографическое меню, где нас интересуют пункты Target System, Subtarget и Target Profile:

image

Вся навигация свободится к выбору нужного пункта (стрелками) и нажатием enter, выбор компонента — также enter, выход из меню — стрелки вправо-влево — Exit. Не забудьте сохранить конфиг.

Применяем стандартные параметры для профиля:

make defconfig Модифицируем набор пакетов: make menuconfig Удалил: opkg из (base system) убрал опцию сборки с поддержкой ipv6 (Global build settings) ppp (Network).

Добавил: Luci luci-app-mwan3 (Luci-Applications) openvpn-polarssl (Network-vpn).

Не забудьте сохранить конфигурацию!

Начинаем сборку:

make -j5 V=s Параметр -j5 указывает на количество ядер +1 поток для быстрой сборки, а V=s — на вывод подробностей (если будут ошибки).

Процесс займет долгое время, 10-15 минут на i7 процессоре, после чего в директории /home/user/wrt/bin/ar71xx появятся наши прошивки для различных версий роутера. Если не появились — смотрим в логи сборки — наверняка, вы превысили размер прошивки и увидите строку: «firmware is too big». Придется делать make clean, make distclean и начинать все заново. (с шага ./scripts/feeds update -a )

Нас интересует:

openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-factory.bin — «заводская» прошивка.

Перекидываем её на компьютер с подключенным по ethernet-у роутером (например, через ftp или winscp).

Заходим по адресу: 192.168.0.1 и прошиваем новоиспеченной прошивкой, ждем перезагрузки, затем заходим по адресу: 192.168.1.1

root без пароля (его назначим при первом входе — вверху будет висеть желтый баннер с предупреждением и ссылкой на смену пароля).

Ну наконец-то, самое сложное позади, теперь у нас современная прошивка и НАШ набор программ.

3) Настройка vlan: Происходит в меню роутера: network — switch

image

Тут не обошлось без непоняток — нумерация портов в роутере и в конфигурации vlan не совпадает. На скриншоте я постарался объяснить как они изменены. Порт WAN в роутере не участвует в vlan-функционале.

Tagged — тэгированный трафик, сюда направляются пакеты от каждого vlan (101, 102, 103), которые затем распределяются по интерфейсам wan (основной провайдер), wan2 (резервный провайдер), eth0.103 (vlan для локальной сети).

Untagged — нетэгированный режим порта (точка входа ethernet-кабеля от нужного провайдера). Тут важно не запутаться в проводах: что куда идет. Я подписал сзади роутера нужные названия, чтобы в будущем не было путаницы (провайдер№1 101, провайдер№2 102, локалка 103).

Проще говоря, мы впускаем через 3 порта 3 разных сети, которые затем внутри устройства распределяются по полочкам.

После изменений нажмите Save, но не Apply! Мы ведь не хотим остаться без сети во время настройки?

Теперь, нужно создать нужные интерфейсы в Network — Interfaces:

image

Удалим wan6 интерфейс (мы не используем ipv6 в данном случае).

Изменим wan интерфейс для первого провайдера, укажем нужные данные для подключения (например, провайдер дает инет по dhcp), и укажем какой vlan использовать для этого интерфейса. Вот тут-то и идет сопоставление vlan: провод: интерфейс.

image

Для второго провайдера wan2 укажем eth0.102.

Для Lan укажем объединить интерфейсы в bridge eth0 и eth0.103:

image

В настройках интерфейсов wan и wan2 укажите метрику устройств (обязательно для работы mwan3):

image

Теперь смело можно жать на Save&Apply и проверить введенные настройки.

4) mwan3 или крутая выручалочка админа Трудно недооценить данный пакет, ведь пользователи смогут получать сумму скорости двух интернет-каналов, интернет в офисе будет всегда, ведь маловероятно, что упадут оба канала.

Для админа пройдет головная боль по временному отключению какого-либо из каналов, и не нужно городить костыльные скрипты по переключению. Я забыл о проблемах в офисе с интернетом и не переживаю когда падает один из них (мне приходят sms по данным событиям).

Я точно знаю, что OpenVPN через 30 секунд переключится на резервный канал (слава параметру multihome), связь с главным офисом в г.Москва восстановится и некоторые пользователи и начальники не заметят данный инцидент.

Приступим:

Зайдем в network — load balancing — configuration:

image

И включим wan2 в работу:

image

Далее, настроим правила работы каналов:

1) Balanced — Каналы складываются, скорость увеличивается, есть отказоустойчивость (переключение). Рекомендую. 2) wan_only — только провайдер№1 3) wan2_only — только провайдер№2

configuration — rules

image

Остальные rules можно удалить или оставить другое правило.

Подробно я останавливаться на mwan3 не буду — скажу только, что есть возможность пускать трафик до определенного ресурса через один из каналов, если есть привязка на данном ресурсе по IP.

5) Офисная дружба или openvpn Отлично, интернет настроили, теперь нужно соединить 2 офиса вместе.

Будет заходить по статическому ключу. Генерацию ключа можно произвести на клиентской стороне:

sudo openvpn --genkey --secret office2.key

Ключ нужно поместить в /etc/openvpn/keys/ (сервер, клиент).

OpenVPN на роутере у нас уже установлен и мы начнем править конфиг. Для этого зайдем на TP-Link по ssh.

vi /etc/config/openvpn

В шапке конфига изменяем:

package openvpn ################################################# # Sample to include a custom config file. # ################################################# config openvpn custom_config # Set to 1 to enable this instance: option enabled 1 # Include OpenVPN configuration option config /etc/openvpn/openvpn.conf Cохраняем, выходим. Тут мы включили кастомный конфиг в /etc/openvpn/openvpn.conf — лично для меня это как-то привычнее.

Далее, сам конфиг:

mkdir /etc/openvpn mkdir /etc/openvpn/keys vi /etc/openvpn/openvpn.conf

На роутере у нас серверная сторона openvpn. Приводим конфиг к виду:

port 1194 #порт сервера proto udp dev tun-office2 #обзовем интерфейс multihome #слушаем подключения на wan и wan2 ifconfig 10.0.0.2 10.0.0.3 #IP-шники окончания туннелей secret /etc/openvpn/keys/office2.key #ключик keepalive 5 30 #переподключение через 30 сек. user nobody group nogroup persist-tun persist-key status /tmp/office2.status log /tmp/office2.log #логи verb 3

Сохраняем, затем:

/etc/init.d/openvpn restart

Теперь клиент:

Примерный конфиг выглядит так:

remote wan.office2.ru #стучимся сначала сюда remote wan2.office2.ru #потом сюда (по очереди) port 1194 proto udp dev tun-office1 ifconfig 10.0.0.3 10.0.0.2 # наоборот как на сервере route 192.168.30.0 255.255.255.0 #пропишем роут для включения офисной подсети роутера в главный офис secret /etc/openvpn/keys/office2.key #клон ключа с сервера keepalive 5 30 #передергиваем туннель при плохом поведении одного из каналов user nobody group nogroup persist-tun persist-key status /var/log/openvpn/office.status log /var/log/openvpn/office.log verb 3

Сохраняем конфиг, применяем:

/etc/init.d/openvpn restart

Смотрим ifconfig, логи и радуемся надежному каналу.

Заключение: Конечно же, вы не один раз убьете свой роутер неудачной прошивкой, позарившись на удаление нужных компонентов base system. Но ничего страшного!

Самый простой способ реанимировать роутер — это fail safe в openwrt:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.1.2 2) Маска 255.255.255.0 3) Кабель ethernet — в порт LAN1 4) Выключите роутер 5) Включите и дождитесь пока загорится значок шестеренки 6) Зажмите на 1-2 секунды кнопку роутера QSS — шестеренка заморгает очень быстро 7) Запустите телнет-клиент и подсоединитесь по адресу 192.168.1.1 8) Залейте в tmp роутера дефолтную прошифку для вашей модели, например, через мини-веб-сервер tinyweb 9) Выполните:

mtd -r write /tmp/имяпрошивки.bin firmware

Роутер скушает прошивку и перезагрузится.

Шеф, всё пропало!

Да, именно так я подумал, когда убил роутер еще тяжелее. Шестеренка не горела, а роутер циклически ребутался без остановки.

Воспользуемся замечательной функцией в прошивке tp-link-а — загрузка прошивки через tftp:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.0.66 2) Маска 255.255.255.0 3) Кабель ethernet — в порт LAN1 4) Запустите tftp сервер с дефолтной прошивкой в папке под названием «wr741ndv4_tp_recovery.bin» (нужно переименовать файл прошивки) 4) Выключите роутер 5) Возьмите острый и тонкий предмет (ручка) 6) Возьмите роутер в руки, поверните его к лицу портами, ручку держите в свободной руке 7) Включите роутер и тут же зажмите QSS пальцем одной руки+reset ручкой в другой руке. Потренируйтесь и это получится. 8) Удерживайте зажатыми эти 2 кнопки 4-8 секунд, пока в tftp клиенте не пойдет загрузка прошивки в роутер. А она пойдет, не беспокойтесь.

Как только прошивка загрузилась (2-3 сек), отпустите кнопки. Выдохните, роутер спасен.

Использованы статьи:

wiki.openwrt.org/ru/doc/howto/build openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html denisyuriev.ru/linux/openwrt-linux/openwrt-sborka-iz-isxodnikov habrahabr.ru/post/186760 wiki.gentoo.org/wiki/OpenVPN wiki.openwrt.org/doc/howto/mwan3 wiki.openwrt.org/ru/doc/howto/generic.uninstall



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有